#include <regx52.h>

/**
 * @brief 初始化定时器0
 * 
 * 功能描述：
 * - 设置定时器模式为模式1（16位计数器）。
 * - 初始化定时器的计时初值。
 * - 清除溢出标志并停止定时器。
 */
void Timer0_Init()
{
    TMOD &= 0xF0;   ///< 清除定时器0的模式位
    TMOD |= 0x01;   ///< 设置定时器0为模式1（16位定时器/计数器）
    TL0 = 0x00;     ///< 设置定时器低8位初值
    TH0 = 0x00;     ///< 设置定时器高8位初值
    TF0 = 0;        ///< 清除定时器0溢出标志位
    TR0 = 0;        ///< 停止定时器0
}

/**
 * @brief 初始化外部中断0
 * 
 * 功能描述：
 * - 设置外部中断0的触发方式为下降沿触发。
 * - 清除外部中断0的中断标志位。
 * - 使能外部中断0。
 * - 全局使能中断。
 * - 设置外部中断0的优先级为高。
 */
void Int_Cut()
{
    IT0 = 1;    ///< 设置外部中断0为下降沿触发
    IE0 = 0;    ///< 清除外部中断0中断标志位
    EX0 = 1;    ///< 使能外部中断0
    EA = 1;     ///< 全局中断使能
    PX0 = 1;    ///< 设置外部中断0的优先级为高优先级
}

// 中断服务函数可以在需要时实现，例如以下模板
// /**
//  * @brief 外部中断0服务函数
//  * 
//  * 功能描述：处理外部中断0的触发事件。
//  */
// void Int0_Routine() interrupt 0
// {
//     // 中断处理逻辑
// }
